Skip to content

虚拟线程存在的问题

Published: at 03:22 PM

Table of contents

Open Table of contents

Lack of Fairness 缺乏抢占式调度

虚拟线程会在遇到阻塞操作时,让出载体线程,以便其他虚拟线程mount,但是如果一个虚拟线程始终没有遇到阻塞操作,那么它会一直运行

虚拟线程不是抢占式,当一个虚拟线程的任务不涉及jdk阻塞操作,那么他会一直执行下去直到任务完成。也就是重CPU操作会大量占用CPU时间而影响虚拟线程之间的公平性

Pin 状态消耗较大

synchornized 同步块为主的很多原因会导致虚拟线程pin到载体线程,从而阻塞载体线程。而目前为止,很多第三方库还未做对应的改造。

虚拟线程引起的上下文切换开销

ThreadLocal in Virtual Threads

固定依赖ForkJoinPool作为载体线程池

线程本地变量用于实现资源池在虚拟线程中失效